from openpyxl import load_workbook

"""
1、读取表头
2、读取数据 - 读取表头以外的所有数据。 - 返回值：列表，成员是每一行数据
"""


class Handle():
    def __init__(self, file_path, sheet_name):
        self.wb = load_workbook(file_path)
        self.sh = self.wb[sheet_name]

    # 读取exce的第一行，当前为标题
    def __read_titles(self):
        tittle = []
        # print(list(self.sh.rows))
        for item in list(self.sh.rows)[0]:  # 每行数据需要转换为可迭代对象
            tittle.append(item.value)  # 把每个单元格的数据提取出来存储在list中
        return tittle

    def read_all_datas(self):
        all_datas = []
        tittle = self.__read_titles()
        for item in list(self.sh.rows)[1:]:  # 遍历除了Excel第一行以外的数据行
            value = []
            for cell_data in item:  # 获取每行数据的每个单元格数据
                value.append(cell_data.value)
            res_dict = dict(zip(tittle, value))
            # print(res_dict)
            all_datas.append(res_dict)  # 使用zip把两个list合并成一个字典，格式：{“title”：“value”}
        return all_datas

    def close_excel(self):
        self.wb.close()


if __name__ == '__main__':
    from Common.handle_path import test_datas
    import os

    file_path = os.path.join(test_datas, "api_cases.xlsx")
    exc = Handle(file_path, "注册")
    print(exc.read_all_datas())
